Skip to main content
This forum is closed to new posts and responses. Individual names altered for privacy purposes. The information contained in this website is provided for informational purposes only and should not be construed as a forum for customer support requests. Any customer support requests should be directed to the official HCL customer support channels below:

HCL Software Customer Support Portal for U.S. Federal Government clients
HCL Software Customer Support Portal

Notes/Domino 8 Forum

Notes/Domino 8 Forum

Previous Next

Custom homepage db with no "hands-on" changes to bookmark.nsf/ntf

I do like the Peter May/Tim Siney method Database 'Notes/Domino 8 Forum', View 'Date (threaded)', Document 'Design changes to local Bookmark.nsf, any version' but like Peter May says, it doesn't work well over slow links.

Has anyone tried the notes.ini variable "Startupdb = <replica:id>"? That may work though I have always shied away from that for some reason.

Anyway, here's the approach I have used to support both badly and well connected clients:

The standard domino policy based "welcome page layout", while not all singing, has a facility to surface any frameset in the users bookmark.nsf file. Here is how to inject a new frameset design element into the users bookmark.nsf and then launch your own completely custom database into that frameset while leaving the entire welcome page infrastructure in place.

In this order:
  1. Deploy your replicating custom homepage database to each local user (you can use policies) and to servers for server based users. It can be any db and doesn't have to be based on bookmarks.ntf. It could even be a Composite App if it is an nsf and can itself be launched in a frameset.
  2. Use the subroutine InjectWelcomePageFramesetIntoBookmarkDb (attached below). This injects (imports via DXL) a frameset that loads the custom homepage database you deployed in 1 above. Call the subroutine it from somewhere under your control centrally. In R7, I customised the mail template and call this on the postopen event of the "Mail Switcher for Notes" form. You could put it in a button and email it if you want to do it manually.
  3. Follow the lotus doc and setup and push out via policies a "Homepage/Welcome Page" layout using a Corporate Welcome Pages database. Make it a single frame and point it to load the frameset you injected into every user's bookmarks.nsf in 2 above. Here is a screenshot of the critical selection you need to make.


Sub InjectWelcomePageFramesetIntoBookmarkDb
'(c) 2006-2008 Peter Herrmann. You may use this code freely for any purpose.
'I tested the code successfully unmodified with Notes 6.5.3, 6.5.4, 7.0.1, 7.0.2 and 7.0.3 (all on Windows).
'You should test before deploying to real users.
'if frameset does not exist in bookmark.nsf, import it as dxl
On Error Goto ErrorHandler
Dim fsName As String
'the fsName is the name of the frameset that will get created in the bookmark.nsf.
fsName = "fsACMEOpener"
Dim sXML As String
'see the database= attribute below and edit it to be the replica id of your custom homepage database.
sXML = |<?xml version='1.0' encoding='utf-8'?>
<frameset name='| & fsName & |' xmlns='http://www.lotus.com/dxl'
version='6.5'
noreplace='true'
publicaccess='false'
spacing='0px' bordercolor='none'
comment = 'imported automatically'>
<frame>
<namedelementlink
type='frameset'
database='CA2572A500139229'
name='Main'/>
</frame>
</frameset>|

Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.GetDatabase( "", "bookmark.nsf", False)

If db Is Nothing Then Exit Sub

REM Check if frameset exists in db
Dim AlreadyExists As Boolean
Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(False)
nc.SelectFrameSets = True
Call nc.BuildCollection
Dim doc As notesdocument
Dim nid As String, i As Integer
nid = nc.GetFirstNoteId
For i = 1 To nc.Count
Set doc = db.GetDocumentByID(nid)
'see if it's the frameset
If doc.GetItemValue("$TITLE")(0) = fsName Then
AlreadyExists = True
Exit Sub
End If
nid = nc.GetNextNoteId(nid)
Next

If Not AlreadyExists Then
REM Import DXL agent into database
Dim importer As NotesDXLImporter
Set importer = session.CreateDXLImporter(sXML, db)
importer.DesignImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
'allow imported notes to overwrite any existing ones during import
importer.ReplicaRequiredForReplaceOrUpdate = False
Call importer.Process
Dim noteId As String
noteId = importer.GetFirstImportedNoteID( )
Call db.Sign(,,noteId,True)
End If
Exit Sub
ErrorHandler:
Messagebox "Error " & Str(Err) & ": " & Error$ & " (line " & Str(Erl) & ")"
Msgbox importer.log
Exit Sub
End Sub


Feedback response number PHEN7D36BL created by ~Tony Loptoosonader on 03/25/2008

Rollout of a customized homepage (~Wendy Zekjipyt... 13.Mar.08)
. . We use a custom database that is pu... (~Nicole Umtumib... 13.Mar.08)
. . . . more on corporate home page (~Dan Elwezenynd... 13.Mar.08)
. . . . . . That's why we use a separate databa... (~Nicole Umtumib... 14.Mar.08)
. . Design changes to local Bookmark.ns... (~Helga Rerepula... 13.Mar.08)
. . Custom homepage db with no "hands-o... (~Tip Opjipyberg... 25.Mar.08)
. . . . we do something similar (~Dexter Elfreel... 6.Jun.08)
. . . . Works great with framesets but.. (~Maria Refreege... 31.Jul.12)




Printer-friendly

Search this forum

Member Tools


RSS Feeds

 RSS feedsRSS
All forum posts RSS
All main topics RSS